package com.zmn.oms.common.constant;

import com.alibaba.fastjson.annotation.JSONType;
import com.zmn.oms.common.utils.CodeEnumSerializerAndDeserializer;

import java.util.Objects;

/**
 * 常量枚举通用接口
 *
 * @author hankangshuai
 * @since 2019-10-30
 */
@JSONType(serializeEnumAsJavaBean = true, serializer = CodeEnumSerializerAndDeserializer.class, deserializer = CodeEnumSerializerAndDeserializer.class)
public interface CodeEnum {
    /**
     * 获取常量值
     *
     * @return 常量值
     */
    Integer getCode();

    static <T extends CodeEnum> T codeOf(Integer code, Class<T> codeEnumClass) {
        T[] enumConstants = codeEnumClass.getEnumConstants();
        for (T enumConstant : enumConstants) {
            if (Objects.equals(enumConstant.getCode(), code)) {
                return enumConstant;
            }
        }
        return null;
    }
}
